// 公司相关的HTTP操作
import http from './http.js'

/**
 * 创建公司
 * @param {Object} params - 创建公司的参数
 * @param {string} params.companyName - 公司名称
 * @param {string} params.description - 公司简介（可选）
 * @param {number} params.allowJoin - 是否允许新用户加入（默认允许：1）
 * @param {string} params.openId - 创建者的 OpenId（小程序用户标识，可选）
 * @returns {Promise} - 返回创建结果
 */
export const createCompany = async (params = {}) => {
	try {
		// 确保参数格式正确
		const formattedParams = {
			companyName: params.companyName || '',
			description: params.description || null,
			allowJoin: params.allowJoin !== undefined ? params.allowJoin : 1,
			openId: params.openId || null
		}

		// 调用API创建公司
		const response = await http.post('Mini/Company/Create', formattedParams)
		return response
	} catch (error) {
		console.error('创建公司失败:', error)
		// 统一错误处理，向上抛出以便调用者处理
		throw error
	}
}

/**
 * 搜索公司
 * @param {Object} params - 搜索公司的参数
 * @param {string} params.companyCode - 公司识别码
 * @returns {Promise} - 返回搜索结果
 */
export const searchCompany = async (params = {}) => {
	try {
		// 确保参数格式正确
		const formattedParams = {
			companyCode: params.companyCode || ''
		}
		
		// 调用API搜索公司
		const response = await http.post('Mini/Company/Search', formattedParams)
		return response
	} catch (error) {
		console.error('搜索公司失败:', error)
		// 统一错误处理，向上抛出以便调用者处理
		throw error
	}
}

/**
 * 获取用户关联的公司信息
 * @returns {Promise} - 返回公司信息
 */
export const getCurrentCompany = async () => {
	try {
		// 调用API获取当前用户的公司信息
		// 注意：这里假设存在一个获取当前公司的接口，如果没有需要根据实际情况调整
		const response = await http.post('Mini/Company/GetCurrent', {})
		return response
	} catch (error) {
		console.error('获取公司信息失败:', error)
		// 统一错误处理，向上抛出以便调用者处理
		throw error
	}
}

/**
 * 绑定公司
 * @param {Object} params - 绑定公司的参数
 * @param {string} params.CompanyCode - 公司编码
 * @returns {Promise} - 返回绑定结果
 */
export const bindCompany = async (params = {}) => {
	try {
		// 确保参数格式正确
		const formattedParams = {
			CompanyCode: params.CompanyCode || ''
		}
		
		// 调用API绑定公司
		const response = await http.post('Mini/Company/BindCompany', formattedParams)
		return response
	} catch (error) {
		console.error('绑定公司失败:', error)
		// 统一错误处理，向上抛出以便调用者处理
		throw error
	}
}